package com.swf.common.utils;

import java.util.*;

import org.apache.commons.lang.StringUtils;

import com.swf.common.base.*;


public final class FwsStringUtils extends StringUtils{
	/**
	 * 禁用默认构造器	
	 */
	private FwsStringUtils() {
	}
	
	/**  
	 * method:turnWhiteSpaceToOne{处理文本中连续的空格（包括\t,"    "等），变为1个}
	 * 如果文本为null，则返回"";  
	 * @param text
	 * @return
	 */
	public static String turnWhiteSpaceToOne(String text){
		if (text==null) return "";
		 text =text.replaceAll("\\s{1,}", " ");
		 return text;

	}
	
	
	/**  
	 * method:turnWhiteSpaceToOneAndTrim{处理文本中连续的空格（包括\t,"    "等），变为1个，并去除头尾的空格}  
	 * @param text
	 * @return
	 */
	public static String turnWhiteSpaceToOneAndTrim(String text){
		text =turnWhiteSpaceToOne(text).trim();
		 return text;

	}
	
	
	/**
	 * 对不存在的字符串设置默认值
	 * @param value
	 * @param defaultValue
	 * @return
	 */
	public static String nvl(String value,String defaultValue){
		return value!=null?value:defaultValue;
	}
	
	/**
	 * 字符串不存在设置为""
	 * @param value
	 * @return
	 */
	public static String nvl(String value){
		return nvl(value,"");
	}
	
	
	/**
	 * 是否为空 只==null或leng=0
	 * @param value
	 * @return
	 */
	public static boolean isEmpty(String value){
		return StringUtils.isEmpty(value);
	}
	
	/**
	 * 是否为非空
	 * @param value
	 * @return
	 */
	public static boolean isNotEmpty(String value){
		return StringUtils.isNotEmpty(value);
	}
	
	public static boolean isBlank(String value){
		return StringUtils.isBlank(value);
	}
	
	public static boolean isNotBlank(String value){
		return StringUtils.isNotBlank(value);
	}


	/**
	 * 判断字符串数组中是否包含某个字符串
	 * @param strs 字符串数组
	 * @param value 检查的字符串
	 * @return 是否包含，true为包含
	 */
	public static boolean contains(String[] strs, String value) {
		List<String> strList = Arrays.asList(strs);
		return strList.contains(value);
	}
	
	/**
	 * 在字符串的最前面添加
	 * @param str
	 * @param addStr
	 * @return
	 */
	public static String addBefore(String str,String addStr){
		return nvl(addStr)+nvl(str);
	}
	/**
	 * 在字符串的最后面添加
	 * @param str
	 * @param addStr
	 * @return
	 */
	public static String addAfter(String str,String addStr){
		return nvl(str)+nvl(addStr);
	}
	
	/**
	 * 在每行开头添加指定字符串
	 * @param str 字符串
	 * @param appendStr 追加字符串
	 * @return
	 */
	public static String addBeforeLine(String str,String appendStr){
		return FwsPatternUtils.replaceRegex(str, "^|(?<="+FwsConstants.line_separator+")", nvl(appendStr));
	}
	
}
